package com.ymh.spring.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.ymh.spring.service.CDPlayer;
import com.ymh.spring.service.CompactDisc;
import com.ymh.spring.service.SgtPeppers;


@Configuration
@ComponentScan(basePackages={"com.ymh.springboot.service","com.ymh.springboot.dao"})
//如果没有其他配置，默认扫描本包以及这个包下面的所有子包的所有使用了@Component注解的类
public class CDplayerConfig {
	
	/**
	 * 
	 * 功能：声明一个bean，beanId为sgtPeppers
	 * 日期：2017年11月2日 上午10:56:49
	 * 作者：Aivin
	 * @return
	 */
	@Bean(name="lonelyHeartsClub")
	public CompactDisc sgtPeppers(){
		return new SgtPeppers();
	}
	
	/**
	 * 
	 * 功能：在一组CD中随机选择一个CompactDisc来播放
	 * 日期：2017年11月2日 上午11:00:09
	 * 作者：Aivin
	 * @return
	 */
	@Bean
	public CompactDisc randomBeatlesCD(){
		int choice = (int) Math.floor(Math.random() * 4);
		if(choice == 1){
			return new SgtPeppers();
		}else if(choice == 2){
			return null;
		}else {
			return null;
		}
	}
	
	/**
	 * 
	 * 功能：通过构造方法实现注入
	 * 日期：2017年11月2日 上午11:14:58
	 * 作者：Aivin
	 * @return
	 */
	@Bean
	public CDPlayer cdPlayer(){
		return new CDPlayer(sgtPeppers());
	}
	
	/**
	 * 
	 * 功能：通过构造方法实现注入
	 * 日期：2017年11月2日 上午11:14:40
	 * 作者：Aivin
	 * @param compactDisc
	 * @return
	 */
	@Bean
	public CDPlayer cdPlayer(CompactDisc compactDisc){
		return new CDPlayer(compactDisc);
	}
	
	/**
	 * 
	 * 功能：通过Setter方法实现注入
	 * 日期：2017年11月2日 上午11:13:46
	 * 作者：Aivin
	 * @param cd
	 * @return
	 */
	@Bean
	public CDPlayer cdPlayer2(CompactDisc cd){
		CDPlayer cdPlayer = new CDPlayer();
		cdPlayer.setCd(cd);
		return cdPlayer;
	}
	
	

}
